home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / cabin2 / code.lua next >
Encoding:
Text File  |  2005-07-16  |  13.6 KB  |  367 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky09.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.         local boring = 0
  15.  
  16.         room.uvod = 0
  17.         room.zivy = 0
  18.         room.poklad = 0
  19.         room.chobotnicka = 0
  20.         room.chobotnicka1 = 0
  21.         room.kostricky = randint(200, 1000)
  22.         room.mysleni = randint(1000, 5000)
  23.         room.posvitime = 0
  24.         room.hrbet = randint(25, 100)
  25.         room.operenej = 0
  26.  
  27.         return function()
  28.             if small:getAction() == "rest" and big:getAction() == "rest" then
  29.                 boring = boring + 1
  30.             else
  31.                 boring = 0
  32.             end
  33.  
  34.             if isReady(small) and isReady(big) and no_dialog() then
  35.                 if room.zivy > 0 then
  36.                     room.zivy = room.zivy + 1
  37.                 end
  38.                 if room.zivy > 50 then
  39.                     room.zivy = 0
  40.                 end
  41.                 if room.kostricky > 0 then
  42.                     room.kostricky = room.kostricky - 1
  43.                 end
  44.                 if room.mysleni > 0 then
  45.                     room.mysleni = room.mysleni - 1
  46.                 end
  47.                 if room.hrbet > 0 and big.Y == poklop.Y + 1 and poklop.Y < poklop.YStart then
  48.                     room.hrbet = room.hrbet - 1
  49.                 end
  50.                 if room.uvod == 0 then
  51.                     if pokus == 1 or random(100) < 50 then
  52.                         addv(randint(20, 30), "ka2-v-nekde")
  53.                         if random(100) < 40 then
  54.                             addm(random(5), "ka2-m-kdepak")
  55.                         end
  56.                     end
  57.                     room.uvod = 1
  58.                 elseif (0 <= papzivy.afaze and papzivy.afaze <= 8) and room.operenej == 0 then
  59.                     addv(0, "ka2-v-papousek")
  60.                     room.operenej = 1
  61.                     room.zivy = 1
  62.                 elseif look_at(small, papzivy) and room.zivy > 0 and room.zivy < 50 and room.operenej == 1 then
  63.                     addm(0, "ka2-m-kostra")
  64.                     room.zivy = 0
  65.                     room.operenej = 0
  66.                 elseif dist(small, truhla) <= 3 and room.poklad == 0 and look_at(small, truhla) and random(100) < 10 then
  67.                     room.poklad = 1
  68.                     addm(random(5), "ka2-m-posledni")
  69.                     local rand7 = random(7)
  70.                     if rand7 == 0 or rand7 == 1 then
  71.                         addv(random(5), "ka2-v-mapa0")
  72.                     elseif rand7 == 2 or rand7 == 3 then
  73.                         addv(random(5), "ka2-v-mapa1")
  74.                     elseif rand7 == 4 or rand7 == 5 then
  75.                         addv(random(5), "ka2-v-mapa2")
  76.                     end
  77.                 elseif small.X >= chobot.X and small.X <= chobot.X + 4 and small.Y == chobot.Y - 1 and room.chobotnicka == 0 and random(100) < 2 then
  78.                     room.chobotnicka = 1
  79.                     addm(1, "ka2-m-chapadlo")
  80.                     switch(random(3)){
  81.                         [0] = function()
  82.                             addv(random(5) + 10, "ka2-v-fik")
  83.                         end,
  84.                         [1] = function()
  85.                             addv(random(5) + 10, "ka2-v-fik")
  86.                             chobot:planDialog(5, "k1-chob-p")
  87.                             addv(random(5), "ka2-v-napad")
  88.                         end,
  89.                     }
  90.                 elseif dist(small, chobot) <= 2 and look_at(small, chobot) and room.chobotnicka1 == 0 and room.chobotnicka == 1 and random(100) < 3 then
  91.                     room.chobotnicka1 = -1
  92.                     addm(1, "ka2-m-hej")
  93.                     if random(3) <= 1 then
  94.                         addm(randint(30, 50), "ka2-m-diky")
  95.                     end
  96.                 elseif room.kostricky == 0 and small.X > 8 and big.X > 8 then
  97.                     room.kostricky = -1
  98.                     addv(random(5), "ka2-v-kostry")
  99.                     if random(100) < 70 then
  100.                         addm(random(5), "ka2-m-patrne")
  101.                     end
  102.                 elseif room.mysleni == 0 and boring > 40 then
  103.                     room.mysleni = -1
  104.                     addv(random(10), "ka2-v-myslet")
  105.                     addm(random(5), "ka2-m-tezko")
  106.                 elseif lampa.dir ~= dir_no and room.posvitime == 0 and random(100) < 40 then
  107.                     addm(10, "ka2-m-svitit")
  108.                     room.posvitime = 1
  109.                 elseif room.hrbet == 0 and big.Y == poklop.Y + 1 and poklop.Y < poklop.YStart then
  110.                     room.hrbet = -1
  111.                     addv(0, "ka2-v-hrbet")
  112.                 end
  113.             end
  114.         end
  115.     end
  116.  
  117.     -- -------------------------------------------------------------
  118.     local function prog_init_truhla()
  119.         return function()
  120.             if truhla.dir ~= dir_no and level_isNewRound() then
  121.                 truhla:talk("k1-x-vrz", VOLUME_FULL)
  122.             end
  123.         end
  124.     end
  125.  
  126.     -- -------------------------------------------------------------
  127.     local function prog_init_papouch()
  128.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  129.  
  130.         papouch.stav = 0
  131.  
  132.         return function()
  133.             if papouch.stav == 0 and random(250) == 0 and no_dialog() then
  134.                 switch(random(7)){
  135.                     [0] = function()
  136.                         planDialogSet(0, "k1-pap-sucharek", 101, papouch, "stav")
  137.                     end,
  138.                     [1] = function()
  139.                         planDialogSet(0, "k1-pap-kruty", 101, papouch, "stav")
  140.                     end,
  141.                     [2] = function()
  142.                         planDialogSet(0, "k1-pap-3xkruty", 101, papouch, "stav")
  143.                     end,
  144.                     [3] = function()
  145.                         planDialogSet(0, "k1-pap-kruci", 101, papouch, "stav")
  146.                     end,
  147.                     [4] = function()
  148.                         planDialogSet(0, "k1-pap-sakris", 101, papouch, "stav")
  149.                     end,
  150.                     [5] = function()
  151.                         planDialogSet(0, "k1-pap-trhnisi", 101, papouch, "stav")
  152.                     end,
  153.                     [6] = function()
  154.                         planDialogSet(0, "k1-pap-problem", 101, papouch, "stav")
  155.                     end,
  156.                 }
  157.             elseif papouch.stav == 101 then
  158.                 papouch.afaze = random(2)
  159.             end
  160.             papouch:updateAnim()
  161.         end
  162.     end
  163.  
  164.     -- -------------------------------------------------------------
  165.     local function prog_init_chobot()
  166.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  167.  
  168.         chobot.lastdir = dir_no
  169.         chobot.oci = 0
  170.         chobot.chapadla = 0
  171.         chobot.akcnost = 2
  172.  
  173.         return function()
  174.             if chobot.dir ~= dir_no then
  175.                 chobot.akcnost = 7
  176.             elseif chobot.akcnost > 2 and math.mod(game_getCycles(), 5) == 0 then
  177.                 chobot.akcnost = chobot.akcnost - 1
  178.             end
  179.             if chobot.dir ~= chobot.lastdir then
  180.                 if not chobot:isTalking() then
  181.                     if chobot.dir == dir_down then
  182.                         chobot:talk("k1-chob-p", VOLUME_FULL)
  183.                     elseif chobot.dir ~= dir_no then
  184.                         switch(random(3)){
  185.                             [0] = function()
  186.                                 chobot:talk("k1-chob-1", VOLUME_FULL)
  187.                             end,
  188.                             [1] = function()
  189.                                 chobot:talk("k1-chob-2", VOLUME_FULL)
  190.                             end,
  191.                             [2] = function()
  192.                                 chobot:talk("k1-chob-3", VOLUME_FULL)
  193.                             end,
  194.                         }
  195.                     end
  196.                 end
  197.                 chobot.lastdir = chobot.dir
  198.             end
  199.             if chobot.dir == dir_no and math.mod(game_getCycles(), chobot.akcnost) == 0 then
  200.                 if random(2) == 0 then
  201.                     if chobot.chapadla < 2 then
  202.                         chobot.chapadla = chobot.chapadla + 1
  203.                     else
  204.                         chobot.chapadla = 0
  205.                     end
  206.                 else
  207.                     if chobot.chapadla > 0 then
  208.                         chobot.chapadla = chobot.chapadla - 1
  209.                     else
  210.                         chobot.chapadla = 2
  211.                     end
  212.                 end
  213.             end
  214.             pomb1 = xdist(small, chobot) == 0 and ydist(small, chobot) <= 0 or xdist(big, chobot) == 0 and ydist(big, chobot) <= 0
  215.             pomb1 = pomb1 or chobot.dir ~= dir_no
  216.             if pomb1 then
  217.                 chobot.oci = 1
  218.             end
  219.             switch(chobot.oci){
  220.                 [0] = function()
  221.                     if random(100) < 10 then
  222.                         chobot.oci = 2
  223.                     end
  224.                 end,
  225.                 [2] = function()
  226.                     if random(100) < 10 then
  227.                         chobot.oci = 0
  228.                     end
  229.                 end,
  230.                 [1] = function()
  231.                     if not pomb1 and random(100) < 20 then
  232.                         chobot.oci = 0
  233.                     end
  234.                 end,
  235.             }
  236.             chobot.afaze = chobot.oci + 3 * chobot.chapadla
  237.             chobot:updateAnim()
  238.         end
  239.     end
  240.  
  241.     -- -------------------------------------------------------------
  242.     local function prog_init_small()
  243.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  244.  
  245.         small.lebku = 0
  246.  
  247.         return function()
  248.         end
  249.     end
  250.  
  251.     -- -------------------------------------------------------------
  252.     local function prog_init_papzivy()
  253.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  254.  
  255.         papzivy.cinnost = 0
  256.         papzivy.pocet = 0
  257.         papzivy.afaze = 9
  258.  
  259.         return function()
  260.             if papzivy.cinnost > 0 and papzivy.cinnost < 20 and small:getAction() == "turn" then
  261.                 if papzivy.cinnost < 5 then
  262.                     papzivy.cinnost = 24 - papzivy.cinnost
  263.                 else
  264.                     papzivy.cinnost = 20
  265.                 end
  266.             end
  267.             switch(papzivy.cinnost){
  268.                 [0] = function()
  269.                     if random(1000) < 4 then
  270.                         if xdist(small, papzivy) > 1 and not small:isLeft() or xdist(small, papzivy) < -1 and small:isLeft() then
  271.                             papzivy.cinnost = 1
  272.                         end
  273.                     end
  274.                 end,
  275.                 [5] = function()
  276.                     papzivy.delay = random(5) + 2
  277.                     papzivy.cinnost = papzivy.cinnost + 1
  278.                 end,
  279.                 [6] = function()
  280.                     if papzivy.delay > 0 then
  281.                         papzivy.delay = papzivy.delay - 1
  282.                     else
  283.                         papzivy.cinnost = papzivy.cinnost + 1
  284.                     end
  285.                 end,
  286.                 [7] = function()
  287.                     papzivy.afaze = 0
  288.                     papzivy.cinnost = papzivy.cinnost + 1
  289.                     papzivy.delay = random(100) + 10
  290.                 end,
  291.                 [8] = function()
  292.                     if papzivy.delay > 0 then
  293.                         papzivy.delay = papzivy.delay - 1
  294.                     else
  295.                         papzivy.cinnost = papzivy.cinnost + 1
  296.                         papzivy.delay = random(60) + 20
  297.                     end
  298.                 end,
  299.                 [9] = function()
  300.                     if odd(game_getCycles()) then
  301.                         papzivy.afaze = random(4) + 1
  302.                     end
  303.                     if papzivy.delay > 0 then
  304.                         papzivy.delay = papzivy.delay - 1
  305.                     else
  306.                         papzivy.cinnost = 7
  307.                     end
  308.                 end,
  309.                 [24] = function()
  310.                     papzivy.cinnost = 0
  311.                 end,
  312.                 default = function()
  313.                     if 1 <= papzivy.cinnost and papzivy.cinnost <= 4 then
  314.                         papzivy.afaze = 9 - papzivy.cinnost
  315.                         papzivy.cinnost = papzivy.cinnost + 1
  316.                     elseif 20 <= papzivy.cinnost and papzivy.cinnost <= 23 then
  317.                         papzivy.afaze = papzivy.cinnost - 14
  318.                         papzivy.cinnost = papzivy.cinnost + 1
  319.                     end
  320.                 end,
  321.             }
  322.             papzivy:updateAnim()
  323.         end
  324.     end
  325.  
  326.     -- --------------------
  327.     local update_table = {}
  328.     local subinit
  329.     subinit = prog_init_room()
  330.     if subinit then
  331.         table.insert(update_table, subinit)
  332.     end
  333.     subinit = prog_init_truhla()
  334.     if subinit then
  335.         table.insert(update_table, subinit)
  336.     end
  337.     subinit = prog_init_papouch()
  338.     if subinit then
  339.         table.insert(update_table, subinit)
  340.     end
  341.     subinit = prog_init_chobot()
  342.     if subinit then
  343.         table.insert(update_table, subinit)
  344.     end
  345.     subinit = prog_init_small()
  346.     if subinit then
  347.         table.insert(update_table, subinit)
  348.     end
  349.     subinit = prog_init_papzivy()
  350.     if subinit then
  351.         table.insert(update_table, subinit)
  352.     end
  353.     return update_table
  354. end
  355. local update_table = prog_init()
  356.  
  357.  
  358. -- -----------------------------------------------------------------
  359. -- Update
  360. -- -----------------------------------------------------------------
  361. function prog_update()
  362.     for key, subupdate in pairs(update_table) do
  363.         subupdate()
  364.     end
  365. end
  366.  
  367.